package com.dxy.yesas2020goals.study.partone.disignpattern.singletonpattern.lazysingleton;

/**
 * @author victorydeng
 * @Classname LazySingleton1
 * @Description TODO 懒汉式单例
 * @Date 2020/2/28 14:44
 * @Created by victorydeng
 */
public class LazySingleton1 {
  //注意这里不能用final修饰 否则无法动态根据外部调用获得实例
  //加入volatile内存屏障防止在赋值的时候重排序指令
  private volatile static LazySingleton1 LAZY_SINGLETON_1 = null;
  //私有构造方法
  private LazySingleton1() {
  }
  //全局访问点
  public static LazySingleton1 getInstance() {
    if (LAZY_SINGLETON_1 == null) {
      synchronized (LazySingleton1.class) {
        if (LAZY_SINGLETON_1 == null) {
          LAZY_SINGLETON_1 = new LazySingleton1();
          //1.分配内存给这个对象
          //2.初始化对象
          //3.设置 LAZY_SINGLETON_1 指向刚分配的内存地址
        }
      }
    }
    return LAZY_SINGLETON_1;
  }
}
